package com.hsp.demo_01;

public class Demo_13 {
    /**
        打印以下图形： 打印一个菱形，且中间为空心
          *
         * *
        *   *
       *     *
      *********
     拆分：
        第一步：来个矩形
        第二步：来个如下图形：
             *
             **
             ***
             ****
             *****
     *  第三步：来个菱形
             *                  1行 1个  2 * 1 - 1
            ***                 2行 3个  2 * 2 - 1
           *****                3行 5个  2 * 3 - 1
          *******
         *********
        分析：1、外层循环记录行，内存循环，记录列， 分析可得，列与行的关系： 列= 2 * 行 -1
             2、可以发现，每一行前面是有空格的，空格的数量为：
                 第一行   4个  5 - 1   5-i
                 第二行   3个  5 - 2
                 第三行   2个  5 - 3

        第四步：来个空心
                可以发现，空心除了最后一行以外，其他的每一行，都是：
                    第一个和最后一个需要打印 *， 其他的都为 " "

        第五步：
         *                  1行 1个  2 * 1 - 1
        ***                 2行 3个  2 * 2 - 1
       *****                3行 5个  2 * 3 - 1
      *******               4行 7个
     *********               5行 9个
      *******                  6 7个
       *****
        ***
         *
     *      可以再第四步的菱形的后面再来个for循环
     *      *******   1行 2 * (总行数 - 第几行) - 1  现在总行为 5 ，第一行： 2 * （5-1） - 1 =7
     *       *****
     *        ***
     *         *
     */
    public static void main(String[] args) {
        //需求拆分：
        //1、先打印一个矩形
       /* for(int i = 1; i <= 5; i++){
            System.out.println("*****");
        }*/
        //2、打印一个直角三角形
       /* for(int i = 1; i <= 5; i++){
            for(int j = 1; j <= i; j++){
                System.out.print("*");
            }
            System.out.println();
        }*/
        //3、打印一个菱形
      /*  for(int i = 1; i <= 5; i++){

            for(int j = 1; j <= 5-i; j++){
                System.out.print(" ");
            }

            for(int j = 1; j <= 2 * i - 1; j++){
                System.out.print("*");
            }
            System.out.println();
        }*/
        //4、打印空心菱形
        int result = 10;
        for(int i = 1; i <= result; i++){
            //上层菱形的前面空白
            for(int j = 1; j <= result - i; j++){
                System.out.print(" ");
            }
            //打印上层菱形
            for(int j = 1; j <= 2 * i - 1; j++){
                if(j==1 || j == 2 * i -1 || i == result){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
        //下层菱形
        for(int i = 1 ; i <= (result - 1); i++){
            //空白
            for(int j = 1; j <= i; j++){
                System.out.print(" ");
            }

            //菱形
            for(int j = 1; j <= 2 * (result - i)  -1; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
